const util = require('../util')
const sign = require('./sign.js')
const BASE_URL = 'https://api-hgj.hejiaic.com'

function sendRequest(opt) {
  // 过滤为空的参数
  const formData = {}
  Object.entries(opt.data || {}).forEach(([key, value]) => {
    if (value === 0 || value) {
      formData[key] = value
    }
  })
  formData.token = wx.getStorageSync('token') || ''
  formData.openid = wx.getStorageSync('openid') || ''
  wx.request({
    url: BASE_URL + opt.url,
    method: opt.method,
    data: sign.md5_sign(formData),
    header: {
      'content-type': 'application/x-www-form-urlencoded',
      ...opt.header
    },
    success: function (res) {
      if (res.data.code === 200) {
        typeof opt.success === 'function' && opt.success(res.data)
        console.log('login 1');
        return
      }
      // token 过期 没有token
      if (res.data.code === 100006 || res.data.code === 100001) {
        util.toast('请先登录禾管家小程序')
        wx.navigateTo({
          url: '/pages/login/login',
        })
        console.log('login 2');
        return
      } 
      // 用户没有权限 被冻结
      if (res.data.code === 800001) {
        util.toast('您的账号已被冻结')
        wx.navigateTo({
          url: '/pages/login/login',
        })
        console.log('login 3');
        return
      } 
      // 用户在其他设备登录
      if (res.data.code === 800002) {
        util.toast('您已在其他设备登录')
        wx.navigateTo({
          url: '/pages/login/login',
        })
        console.log('login 4');
        return
      } 
      typeof opt.fail === 'function' && opt.fail(res.data)
    },
    fail: function (err) {
      typeof opt.fail === 'function' && opt.fail(err)
      util.toast('服务器请求失败！')
    },
    complete: function (res) {
      typeof opt.complete === 'function' && opt.complete(res.data)
    }
  })
}

module.exports = {
  sendRequest,
  get: function (opt) {
    sendRequest({
      ...opt,
      method: 'GET'
    })
  },
  post: function (opt) {
    sendRequest({
      ...opt,
      method: 'POST'
    })
  }
}